home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 60 / 60.xpi / chrome / webdeveloper.jar / content / webdeveloper / miscellaneous.js < prev    next >
Text File  |  2009-06-30  |  14KB  |  385 lines

  1. // Clears all private data
  2. function webdeveloper_clearAllPrivateData()
  3. {
  4.     // If the browser glue is found
  5.     if(Components.classes["@mozilla.org/browser/browserglue;1"])
  6.     {
  7.         Components.classes["@mozilla.org/browser/browserglue;1"].getService(Components.interfaces.nsIBrowserGlue).sanitize(window || null);
  8.     }
  9.     else
  10.     {
  11.         window.openDialog("chrome://webdeveloper/content/message/message.xul", "webdeveloper-message-dialog", "centerscreen,chrome,modal", document.getElementById("webdeveloper-string-bundle").getString("webdeveloper_firefox15Required"));
  12.     }
  13. }
  14.  
  15. // Clears the cache
  16. function webdeveloper_clearCache()
  17. {
  18.     var stringBundle = document.getElementById("webdeveloper-string-bundle");
  19.  
  20.     // If the clearing is confirmed
  21.     if(webdeveloper_clearConfirmation(stringBundle.getString("webdeveloper_clearCacheConfirmation")))
  22.     {
  23.         var cacheInterface = Components.interfaces.nsICache;
  24.         var cacheService   = Components.classes["@mozilla.org/network/cache-service;1"].getService(Components.interfaces.nsICacheService);
  25.  
  26.         try
  27.         {
  28.             cacheService.evictEntries(cacheInterface.STORE_ON_DISK);
  29.             cacheService.evictEntries(cacheInterface.STORE_IN_MEMORY);
  30.  
  31.             // If the hide informational dialogs preference is not set
  32.             if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true))
  33.             {
  34.                 webdeveloper_informationalDialog(stringBundle.getString("webdeveloper_clearCache"), stringBundle.getString("webdeveloper_clearCacheResult"));
  35.             }
  36.         }
  37.         catch(exception)
  38.         {
  39.             // Do nothing
  40.         }
  41.     }
  42. }
  43.  
  44. // Clears the history
  45. function webdeveloper_clearHistory()
  46. {
  47.     var stringBundle = document.getElementById("webdeveloper-string-bundle");
  48.  
  49.     // If the clearing is confirmed
  50.     if(webdeveloper_clearConfirmation(stringBundle.getString("webdeveloper_clearHistoryConfirmation")))
  51.     {
  52.         webdeveloper_removeAllFromHistory();
  53.  
  54.         // If the hide informational dialogs preference is not set
  55.         if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true))
  56.         {
  57.             webdeveloper_informationalDialog(stringBundle.getString("webdeveloper_clearHistory"), stringBundle.getString("webdeveloper_clearHistoryResult"));
  58.         }
  59.     }
  60. }
  61.  
  62. // Clears the HTTP authentication
  63. function webdeveloper_clearHTTPAuthentication()
  64. {
  65.     var authenticationManager = Components.classes["@mozilla.org/network/http-auth-manager;1"].getService(Components.interfaces.nsIHttpAuthManager);
  66.  
  67.     authenticationManager.clearAll();
  68.  
  69.     // If the hide informational dialogs preference is not set
  70.     if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true))
  71.     {
  72.         var stringBundle = document.getElementById("webdeveloper-string-bundle");
  73.  
  74.         webdeveloper_informationalDialog(stringBundle.getString("webdeveloper_clearHTTPAuthentication"), stringBundle.getString("webdeveloper_clearHTTPAuthenticationResult"));
  75.     }
  76. }
  77.  
  78. // Allows the user to edit the HTML of the current page
  79. function webdeveloper_editHTML()
  80. {
  81.     var stringBundle = document.getElementById("webdeveloper-string-bundle");
  82.     var editHTML     = stringBundle.getString("webdeveloper_editHTML");
  83.  
  84.     // If edit HTML is open in the dashboard
  85.     if(webdeveloper_isOpenInDashboard(editHTML))
  86.     {
  87.         webdeveloper_closeInDashboard(editHTML);
  88.     }
  89.     else if(webdeveloper_pageHasFrames())
  90.     {
  91.         window.openDialog("chrome://webdeveloper/content/message/message.xul", "webdeveloper-message-dialog", "centerscreen,chrome,modal", stringBundle.getString("webdeveloper_framesNotSupported"));
  92.     }
  93.     else
  94.     {
  95.         webdeveloper_openInDashboard(editHTML, "chrome://webdeveloper/content/dashboard/edit_html.xul");
  96.     }
  97. }
  98.  
  99. // Linearizes all elements
  100. function webdeveloper_linearizePage(element)
  101. {
  102.     webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/linearize_page.css", "webdeveloper-linearize-page");
  103. }
  104.  
  105. // Makes all the frames resizable
  106. function webdeveloper_makeFramesResizable()
  107. {
  108.     var documentList    = webdeveloper_getDocuments(webdeveloper_getContentWindow());
  109.     var documentLength  = documentList.length;
  110.     var frame           = null;
  111.     var framesList      = null;
  112.     var framesLength    = null;
  113.     var pageDocument    = null;
  114.     var resizableFrames = 0;
  115.  
  116.     // Loop through the documents
  117.     for(var i = 0; i < documentLength; i++)
  118.     {
  119.         pageDocument = documentList[i];
  120.         framesList   = pageDocument.getElementsByTagName("frame");
  121.         framesLength = framesList.length;
  122.  
  123.         // Loop through all the frames
  124.         for(var j = 0; j < framesLength; j++)
  125.         {
  126.             frame = framesList[j];
  127.  
  128.             // If the frame has a no resize attribute
  129.             if(frame.hasAttribute("noresize"))
  130.             {
  131.                 frame.removeAttribute("noresize");
  132.                 resizableFrames++;
  133.             }
  134.         }
  135.     }
  136.  
  137.     // If the hide informational dialogs preference is not set
  138.     if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true))
  139.     {
  140.         var stringBundle = document.getElementById("webdeveloper-string-bundle");
  141.         var title        = stringBundle.getString("webdeveloper_makeFramesResizable");
  142.  
  143.         // If one frame was made resizable
  144.         if(resizableFrames == 1)
  145.         {
  146.             webdeveloper_informationalDialog(title, stringBundle.getString("webdeveloper_makeFramesResizableSingleResult"));
  147.         }
  148.         else
  149.         {
  150.             webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_makeFramesResizableMultipleResult", [resizableFrames]));
  151.         }
  152.     }
  153. }
  154.  
  155. // Shows all hidden elements
  156. function webdeveloper_showHiddenElements()
  157. {
  158.     var computedStyle   = null;
  159.     var display         = null;
  160.     var documentList    = webdeveloper_getDocuments(webdeveloper_getContentWindow());
  161.     var documentLength  = documentList.length;
  162.     var element         = null;
  163.     var hiddenElements  = new Array("area", "base", "basefont", "head", "meta", "param", "script", "style", "title");
  164.     var pageDocument    = null;
  165.     var tagName         = null;
  166.     var treeWalker      = null;
  167.  
  168.     // Loop through the documents
  169.     for(var i = 0; i < documentLength; i++)
  170.     {
  171.         pageDocument = documentList[i];
  172.         treeWalker   = pageDocument.createTreeWalker(webdeveloper_getDocumentBodyElement(pageDocument), NodeFilter.SHOW_ELEMENT, null, false);
  173.  
  174.         // While the tree walker has more nodes
  175.         while((element = treeWalker.nextNode()) != null)
  176.         {
  177.             computedStyle = element.ownerDocument.defaultView.getComputedStyle(element, null);
  178.  
  179.             // If the computed style is set
  180.             if(computedStyle)
  181.             {
  182.                 display = computedStyle.getPropertyCSSValue("display");
  183.                 tagName = element.tagName;
  184.  
  185.                 // If this element has a display and tag name, the display is set to none and the tag name is not script
  186.                 if(display && tagName && display.cssText == "none" && !webdeveloper_contains(hiddenElements, tagName.toLowerCase()))
  187.                 {
  188.                     element.style.display = "";
  189.                 }
  190.             }
  191.         }
  192.     }
  193. }
  194.  
  195. // Shows the window chrome
  196. function webdeveloper_showWindowChrome()
  197. {
  198.     var browserWindow     = null;
  199.     var windowEnumeration = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getEnumerator("navigator:browser");
  200.  
  201.     // Loop through the open windows
  202.     while(windowEnumeration.hasMoreElements())
  203.     {
  204.         browserWindow = windowEnumeration.getNext();
  205.  
  206.         browserWindow.locationbar.visible = true;
  207.         browserWindow.menubar.visible     = true;
  208.         browserWindow.personalbar.visible = true;
  209.         browserWindow.statusbar.visible   = true;
  210.         browserWindow.toolbar.visible     = true;
  211.     }
  212. }
  213.  
  214. // Renders the page for a small screen
  215. function webdeveloper_smallScreenRendering(element)
  216. {
  217.     var documentList   = webdeveloper_getDocuments(webdeveloper_getContentWindow());
  218.     var documentLength = documentList.length;
  219.     var styleSheetList = new Array();
  220.  
  221.     // Loop through the documents
  222.     for(var i = 0; i < documentLength; i++)
  223.     {
  224.         styleSheetList = styleSheetList.concat(webdeveloper_getStyleSheetsForDocument(documentList[i], false, false));
  225.     }
  226.  
  227.     // If there is a handheld style sheet
  228.     if(webdeveloper_hasStyleSheetForMedia(styleSheetList, "handheld"))
  229.     {
  230.         webdeveloper_displayCSSMediaType("handheld", !webdeveloper_convertToBoolean(element.getAttribute("checked")));
  231.         webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/empty.css", "webdeveloper-small-screen-rendering");
  232.     }
  233.     else
  234.     {
  235.         webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/small_screen_rendering.css", "webdeveloper-small-screen-rendering");
  236.     }
  237. }
  238.  
  239. // Toggles all links on the page between visited and unvisited
  240. function webdeveloper_toggleVisitedLinks(visited)
  241. {
  242.     var documentList   = webdeveloper_getDocuments(webdeveloper_getContentWindow());
  243.     var documentLength = documentList.length;
  244.     var href           = null;
  245.     var link           = null;
  246.     var linkLength     = null;
  247.     var linkList       = null;
  248.     var pageDocument   = null;
  249.  
  250.     // Loop through the documents
  251.     for(var i = 0; i < documentLength; i++)
  252.     {
  253.         pageDocument = documentList[i];
  254.         linkList     = pageDocument.links;
  255.         linkLength   = linkList.length;
  256.  
  257.         // Loop through all the links
  258.         for(var j = 0; j < linkLength; j++)
  259.         {
  260.             link = linkList[j];
  261.             href = link.href;
  262.  
  263.             // If this link has an href
  264.             if(href)
  265.             {
  266.                 // If marking links as visited
  267.                 if(visited)
  268.                 {
  269.                     webdeveloper_addToHistory(href);
  270.                 }
  271.                 else
  272.                 {
  273.                     webdeveloper_removeFromHistory(href);
  274.                 }
  275.  
  276.                 // Force the browser to recheck the history by changing the href
  277.                 link.href = "";
  278.                 link.href = href;
  279.             }
  280.         }
  281.     }
  282. }
  283.  
  284. // Updates the clear private data menu
  285. function webdeveloper_updateClearPrivateDataMenu(suffix)
  286. {
  287.     var menu = document.getElementById("webdeveloper-clear-all-private-data-" + suffix);
  288.  
  289.     // If the menu exists
  290.     if(menu)
  291.     {
  292.         // If the browser glue is not found
  293.         if(!Components.classes["@mozilla.org/browser/browserglue;1"])
  294.         {
  295.             menu.setAttribute("class", "menuitem-iconic");
  296.         }
  297.         else if(menu.hasAttribute("class"))
  298.         {
  299.             menu.removeAttribute("class");
  300.         }
  301.     }
  302. }
  303.  
  304. // Updates the miscellaneous menu
  305. function webdeveloper_updateMiscellaneousMenu(suffix)
  306. {
  307.     var menu            = document.getElementById("webdeveloper-edit-html-" + suffix);
  308.     var pageHasFrames   = webdeveloper_pageHasFrames();
  309.  
  310.     // If the menu exists
  311.     if(menu)
  312.     {
  313.         var editHTMLOpen = webdeveloper_isOpenInDashboard(document.getElementById("webdeveloper-string-bundle").getString("webdeveloper_editHTML"));
  314.  
  315.         webdeveloper_configureElement(menu, "checked", editHTMLOpen);
  316.  
  317.         // If edit HTML is not open and the page has frames
  318.         if(!editHTMLOpen && pageHasFrames)
  319.         {
  320.             menu.setAttribute("class", "menuitem-iconic");
  321.         }
  322.         else if(menu.hasAttribute("class"))
  323.         {
  324.             menu.removeAttribute("class");
  325.         }
  326.     }
  327.  
  328.     menu = document.getElementById("webdeveloper-display-line-guides-" + suffix);
  329.  
  330.     // If the menu exists
  331.     if(menu)
  332.     {
  333.         // If the page has frames
  334.         if(pageHasFrames)
  335.         {
  336.             menu.setAttribute("class", "menuitem-iconic");
  337.         }
  338.         else if(menu.hasAttribute("class"))
  339.         {
  340.             menu.removeAttribute("class");
  341.         }
  342.     }
  343.  
  344.     menu = document.getElementById("webdeveloper-display-page-magnifier-" + suffix);
  345.  
  346.     // If the menu exists
  347.     if(menu)
  348.     {
  349.         var canvas = document.getElementById("webdeveloper-page-magnifier");
  350.  
  351.         // If the canvas is not set or has no context
  352.         if(!canvas || !canvas.getContext)
  353.         {
  354.             menu.setAttribute("class", "menuitem-iconic");
  355.         }
  356.         else if(menu.hasAttribute("class"))
  357.         {
  358.             menu.removeAttribute("class");
  359.         }
  360.     }
  361.  
  362.     menu = document.getElementById("webdeveloper-display-ruler-" + suffix);
  363.  
  364.     // If the menu exists
  365.     if(menu)
  366.     {
  367.         // If the page has frames
  368.         if(pageHasFrames)
  369.         {
  370.             menu.setAttribute("class", "menuitem-iconic");
  371.         }
  372.         else if(menu.hasAttribute("class"))
  373.         {
  374.             menu.removeAttribute("class");
  375.         }
  376.     }
  377.  
  378.     webdeveloper_configureElement(document.getElementById("webdeveloper-display-page-magnifier-" + suffix), "checked", !document.getElementById("webdeveloper-page-magnifier-toolbar").hidden);
  379.     webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-line-guides-" + suffix), "checked", "webdeveloper-display-line-guides");
  380.     webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-ruler-" + suffix), "checked", "webdeveloper-display-ruler");
  381.     webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-linearize-page-" + suffix), "checked", "webdeveloper-linearize-page");
  382.     webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-show-comments-" + suffix), "checked", "webdeveloper-show-comments");
  383.     webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-small-screen-rendering-" + suffix), "checked", "webdeveloper-small-screen-rendering");
  384. }
  385.